function fig = PlotXeDriving(obj, drvData)
    if nargin == 1
        drvData = obj.SystemInfo.XeDriving;
    end
    
    data129R = drvData.signal.getNodeData(1);
    data131R = drvData.signal.getNodeData(2);
    data129Theta = drvData.signal.getNodeData(3);
    data131Theta = drvData.signal.getNodeData(4);
    
    gain129 = obj.SystemInfo.MagnetometerBandwidth.gain129;
    gain131 = obj.SystemInfo.MagnetometerBandwidth.gain131;
    V2nT = obj.bx.setting.volt2curr * obj.bx.setting.curr2nT; % nT/V
    
    fig = figure('Name', sprintf('Xe Driving: [%s]', datestr(drvData.timestamp)), 'WindowStyle', 'Docked'); 
    
    ax1 = subplot(2, 2, 1, 'Parent', fig);
    plot(ax1, data129R.x, data129R.y, 'r.-'); grid on;
    xlabel(ax1, 'Time (s)'); xlim(ax1, minmax(data129R.x(:)'));  
    yyaxis(ax1, 'left');  ylabel(ax1, 'Xe129 Signal (V)'); ylim(ax1, [0 1.1*max(data129R.y)]);
    yyaxis(ax1, 'right'); ylabel(ax1, 'Xe129 Signal (nT)'); ylim(ax1, [0 1.1*max(data129R.y)/gain129*V2nT]);
    title(ax1, sprintf('amp = %3.2fmV, detuning=%3.2fmHz', drvData.amplitude129*1e3, drvData.detuning129*1e3));
    legend(ax1, {'Xe129 demodR'}, 'Location', 'best');
    

    ax2 = subplot(2, 2, 2, 'Parent', fig);
    plot(ax2, data131R.x, data131R.y, 'r.-'); grid on;
    xlabel(ax2, 'Time (s)'); 
    xlim(ax2, minmax(data131R.x(:)')); 
    yyaxis(ax2, 'left');  ylabel(ax2, 'Xe131 Signal (V)'); ylim(ax2, [0 1.1*max(data131R.y)]);
    yyaxis(ax2, 'right'); ylabel(ax2, 'Xe131 Signal (nT)');ylim(ax2, [0 1.1*max(data131R.y)/gain131*V2nT]);
    title(ax2, sprintf('amp = %3.2fmV, detuning=%3.2fmHz', drvData.amplitude131*1e3, drvData.detuning131*1e3));
    legend(ax2, {'Xe131 demodR'}, 'Location', 'best');

    ax3 = subplot(2, 2, 3, 'Parent', fig);
    plot(ax3, data129Theta.x, data129Theta.y/pi*180, 'b.-'); grid on;
    xlabel(ax3, 'Time (s)'); ylabel(ax3, 'Xe129 Phase (degree)');
    xlim(ax3, minmax(data129Theta.x(:)')); 
    legend(ax3, {'Xe129 demodTheta'}, 'Location', 'best');

    ax4 = subplot(2, 2, 4, 'Parent', fig);
    plot(ax4, data131Theta.x, data131Theta.y/pi*180, 'b.-'); grid on;
    xlabel(ax4, 'Time (s)'); ylabel(ax4, 'Xe131 Phase (degree)');
    xlim(ax4, minmax(data131Theta.x(:)')); 
    legend(ax4, {'Xe131 demodTheta'}, 'Location', 'best');
end

